package com.raising.modules.sys.dao;


import com.raising.framework.annotation.MyBatisDao;
import com.raising.framework.dao.ICrudDao;
import com.raising.modules.sys.entity.Organization;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 组织机构Dao
 * 
 * @author gaoy
 */
@MyBatisDao
public interface OrganizationDao extends ICrudDao<Organization> {

    /**
     * 查询是否存在下级节点
     * @param id
     * @return
     */
    int findNext(@Param("id") String id);
     /**
     * 根据单位标识id查询机构当前下属单位最大的编号no
     * @author GaoYuan
     * @datetime 2018/1/24 下午5:19
     */
    String getSubMaxNoById(@Param("id")String id);
    /**
     * 查询下级节点单位
     * @author GaoYuan
     * @datetime 2018/1/24 下午7:12
     */
    List<Organization> getNextNode(@Param("no")String no,@Param("length")int length);
    /**
     * 更新指定单位的上级parentId
     * @author GaoYuan
     * @datetime 2018/1/24 下午7:16
     */
    void updateParentId(@Param("id")String id,@Param("parentId")String parentId);
    /**
     * 执行数据上下级清洗操作（自动拼凑上下级）
     * @author GaoYuan
     * @datetime 2018/1/29 下午3:42
     */
    void updateTree();
    /**
     * 查询所有下属单位（包含自己以及下属所有）
     * @author GaoYuan
     * @datetime 2018/1/24 下午7:51
     */
    List<Organization> getChildrenByNo(@Param("no")String no);
    /**
     * 根据id查询no
     * @author GaoYuan
     * @datetime 2018/1/24 下午8:15
     */
    String getNoById(@Param("id")String id);
    /**
     * 更新单位照片
     * @author GaoYuan
     * @datetime 2018/1/27 下午5:54
     */
    int updateHeadImg(Organization organization);
    /**
     * 获取最顶级单位数据
     * @author GaoYuan
     * @datetime 2018/2/3 下午3:55
     */
    Organization getGroupOrgId();
    /**
     * @Author: chenwei
     * @Description: 获取军旅的机构
     * @Date: 2018/2/27 16:50
     */
    List<Organization> getBeforeSecondOrganization(Organization organization);
    /**
     * 获取所有旅的机构
     * @author lirg
     * @TrainAssess 2018/3/9 14:59
     * @param 
     */
    List<Organization> getAllMilitaryBrigadeOrg();
}
